package main

import (
	"fmt"
)

func triangular(n int) {
	for i := 1; i <= n; i++ {
		for j := 1; j <= n; j++ {
			if i+j >= n+1 {
				fmt.Printf("%-3d", n+1-j)
			} else {
				fmt.Printf("%-3s", "")
			}
		}
		fmt.Println()
	}
}

func factorial(n int) int {
	if n == 0 {
		return 1
	} else if n > 0 {
		return n * factorial(n-1)
	} else {
		return 0
	}

}
func main() {
	// 1、求n的阶乘。至少使用递归函数完成一次。
	// n! = n * (n-1)!
	fmt.Println("~~~~~~打印n的阶乘~~~~~~")
	n := 9
	fmt.Println(factorial(n))
	// 2、编写一个函数，接受一个参数n，n为正整数。要求数字必须对齐
	// i行j列 i+j >= n+1 时打印 n+1-j，否则打印空白
	fmt.Println("~~~~~~打印上三角~~~~~~")
	n = 12
	triangular(n)
}

// 批改意见
// 1. 阶乘可以考虑使用其他方法实现一下
// 2. 阶乘在n<0这种异常情况时，不要直接返回值，可以给出一些提示